/**
 * 用户相关 API
 * 使用示例：展示如何使用封装的请求工具
 */

import { get, post, put, del } from '@/utils/request'

/**
 * 获取用户列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.keyword - 搜索关键词
 * @returns {Promise} 用户列表数据
 */
export function getUserList(params) {
  return get('/users', params)
}

/**
 * 获取用户详情
 * @param {number|string} id - 用户ID
 * @returns {Promise} 用户详情数据
 */
export function getUserDetail(id) {
  return get(`/users/${id}`)
}

/**
 * 创建用户
 * @param {Object} data - 用户数据
 * @param {string} data.username - 用户名
 * @param {string} data.name - 姓名
 * @param {string} data.email - 邮箱
 * @param {string} data.phone - 手机号
 * @returns {Promise} 创建结果
 */
export function createUser(data) {
  return post('/users', data)
}

/**
 * 更新用户
 * @param {number|string} id - 用户ID
 * @param {Object} data - 用户数据
 * @returns {Promise} 更新结果
 */
export function updateUser(id, data) {
  return put(`/users/${id}`, data)
}

/**
 * 删除用户
 * @param {number|string} id - 用户ID
 * @returns {Promise} 删除结果
 */
export function deleteUser(id) {
  return del(`/users/${id}`)
}

/**
 * 批量删除用户
 * @param {Array<number|string>} ids - 用户ID数组
 * @returns {Promise} 删除结果
 */
export function batchDeleteUsers(ids) {
  return post('/users/batch-delete', { ids })
}

/**
 * 用户登录 - 使用表单格式
 * @param {Object} data - 登录信息
 * @param {string} data.username - 用户名
 * @param {string} data.password - 密码
 * @returns {Promise} 登录结果（包含 token）
 */
export function login(data) {
  // 将数据转换为表单格式
  const formData = new URLSearchParams()
  formData.append('username', data.username)
  formData.append('password', data.password)
  
  return post('/user/login', formData, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
}

/**
 * 用户登出
 * @returns {Promise} 登出结果
 */
export function logout() {
  return post('/auth/logout')
}

/**
 * 获取当前用户信息
 * @returns {Promise} 用户信息
 */
export function getCurrentUser() {
  return get('/auth/current-user')
}

/**
 * 修改密码
 * @param {Object} data - 密码数据
 * @param {string} data.oldPassword - 旧密码
 * @param {string} data.newPassword - 新密码
 * @returns {Promise} 修改结果
 */
export function changePassword(data) {
  return post('/auth/change-password', data)
}

/**
 * 重置密码
 * @param {number|string} id - 用户ID
 * @returns {Promise} 重置结果
 */
export function resetPassword(id) {
  return post(`/users/${id}/reset-password`)
}

/**
 * 启用/禁用用户
 * @param {number|string} id - 用户ID
 * @param {boolean} enabled - 是否启用
 * @returns {Promise} 操作结果
 */
export function toggleUserStatus(id, enabled) {
  return post(`/users/${id}/toggle-status`, { enabled })
}

